package IOStream.Exercise001;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * ClassName:Exercise001
 * Package:IOStream.Exercise
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/3/2-17:16
 * @Version:v1.0
 */
public class Exercise001 {
    /**字节流：拷贝任意类型文件
     * 字符流：读取纯文本文件中的数据,往纯文本文件中写出数据*/

    //需求：拷贝一个文件夹,考虑子文件夹
    public static void main(String[] args) throws IOException {

        //1.创建对象,表示数据源
        File scr = new File("E:\\aaa\\bbb");
        //创建对象表示目的地
        File dest = new File("E:\\aaa\\ccc");

        //调用方法开始拷贝
        copydir(scr,dest);
    }

    /*
    * 作用：拷贝文件
    * 参数一：数据源
    * 参数二：目的地*/
    private static void copydir(File scr, File dest) throws IOException {
        //递归 
        /*1.进入数据源
        * 2.遍历数组
        * 3.判断文件,拷贝
        * 4.判断文件夹,递归*/

        dest.mkdir();

        File[] file =scr.listFiles();
        for (File file1 : file) {
            if (file1.isFile()){
                //判断文件,拷贝
                FileInputStream fis = new FileInputStream(file1);
                FileOutputStream fos = new FileOutputStream(new File(dest,file1.getName()));
                int b;
                byte[] bytes = new byte[1024];
                while ((b=fis.read(bytes))!=-1){
                    fos.write(bytes,0,b);
                }
                fos.close();
                fis.close();
            }else{
                copydir(file1,new File(dest,file1.getName()));
            }
        }
    }
}
